package com.deer.wms.instock.service;


import com.deer.wms.ASN.manage.model.asn.AsnMaster;
import com.deer.wms.base.system.model.OrderToErpBO;
import com.deer.wms.instock.model.Allot.TransferBillCriteria;
import com.deer.wms.instock.model.disptch.DispatCriteria;
import com.deer.wms.instock.model.transfer.TransferBill;
import com.deer.wms.instock.model.transfer.UpperData;
import com.deer.wms.intercept.common.data.CurrentUser;
import com.deer.wms.project.root.service.SuperService;
import com.deer.wms.ware.task.model.ErpPushLogInfo;
import com.deer.wms.ware.task.model.SO.SoDetail;
import com.deer.wms.ware.task.model.SO.vo.SoDetailVo;
import com.deer.wms.ware.task.model.SO.vo.SoMasterVo;

import java.util.List;

/**
 * @author : wei
 * @since : 2022-01-08 20:43:19
 **/
public interface TransferBillService extends SuperService<TransferBill> {

    /**
     * 创建并确认转移单
     * @param transferBills 转移单
     * @return List<AcceptRecord>
     */
    List<TransferBill> saveAndConfirmTransferBill(List<TransferBill> transferBills);

    /**
     * 新增转移单
     * @param transferBills 转移单
     * @return List<TransferBill>
     */
    List<TransferBill> createTransferBill(List<TransferBill> transferBills);

    /**
     * 转移单确认
     * @param transferBills 转移单
     * @return List<TransferBill>
     */
    List<TransferBill> confirmTransferBill(List<TransferBill> transferBills);

    /**
     * 查询装箱单据的数据
     * @param transferBillCriteria 单据查询条件实体
     * @return List<AcceptRecord>
     */
    List<TransferBill> selectBillList(TransferBillCriteria transferBillCriteria);



    /**
     * 直发虚仓出库
     * @param detailId
     */
    void virtual(List<String> detailId, CurrentUser currentUser);


    /**
     * 转移
     * @param erpPushLogInfo
     * @param id
     */
    void updateErpLog(List<ErpPushLogInfo> erpPushLogInfo, Integer id);


    /**
     *
     * @param criteria
     * @return
     */
    List<AsnMaster> alignList(DispatCriteria criteria);


    /**
     * 详情
     * @param billNo
     * @return
     */
    SoDetailVo detail(String billNo);


    /**
     * 查其他生产任务单中的数据
     * @param itemCode
     * @param billNo
     * @return
     */
    List<SoDetail> beBeing(String itemCode, String billNo);



    /**
     * 聚源回传ERP
     * @param upperData
     */
    void createUpper(UpperData upperData);
}
